﻿
using System;
namespace Levfier.Proccessors.Chains
{
    /// <summary>
    /// プロセッサ同士を繋ぐ
    /// </summary>
    public interface IChainable
    {
        /// <summary>
        /// 後段の処理を開始する
        /// </summary>
        void FlowSounds();

        /// <summary>
        /// バッファを取得する
        /// </summary>
        /// <returns>音の時系列データ</returns>
        double[] GetBuffer();

        /// <summary>
        /// 後段の処理クラスをセットする
        /// </summary>
        /// <param name="proccessor">後段の処理を行うクラス</param>
        /// <return>true : 成功、false: 失敗</return>
        void SetProccessor(IProccessable proccessor);

        /// <summary>
        /// 後段の処理クラスをセットする
        /// </summary>
        /// <param name="proccessor">後段の処理を行うクラス</param>
        /// <return>true : 成功、false: 失敗</return>
        bool RemoveProccessor(IProccessable proccessor);
    }
}
